home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / windows / win31 / cenviw.arj / CENVI.DOC < prev    next >
Text File  |  1994-03-15  |  54KB  |  1,016 lines

  1.                     CEnvi Shareware Manual, Chapter 1:
  2.                        CEnvi Unregistered Shareware
  3.  
  4.                      CEnvi unregistered version 1.009
  5.                                9 March 1994
  6.  
  7.                        CEnvi Shareware User's Manual
  8.  
  9.           Copyright 1993, Nombas, All Rights Reserved.
  10.           Published by Nombas, P.O. Box 875, Medford, MA 02155 USA
  11.           (617)391-6595
  12.  
  13.           Thank you for trying this shareware version of CEnvi from Nombas,
  14.           a member of the Association of Shareware Professionals (ASP).
  15.  
  16. 1.  CEnvi Unregistered Shareware
  17.  
  18. 1.1.  Introduction to Cmm and CEnvi
  19.  
  20.           Cmm (C minus minus) is 'C' for the rest of us.  CEnvi runs Cmm
  21.           programs in the DOS, Windows, OS/2, NT, Unix, etc...
  22.           environments.  Together, CEnvi and Cmm make the power and
  23.           flexibility of the C programming language part of every computer
  24.           user's environment, without the hardware, time, and programmer
  25.           resources needed for developing full-blown C programs.
  26.  
  27.           With CEnvi and Cmm, anyone can take control of their computer
  28.           environment.  C is not just for programming nerds anymore.  CEnvi
  29.           utilites, macros, batch files, and scripts can quickly be
  30.           created, shared, and modified among all computer users,
  31.           professional and amateur alike.
  32.  
  33.           CEnvi can be incorporated at a pace that is comfortable to you:
  34.           you may only want to use CEnvi code set up by a more experienced
  35.           user, you may want to enhance existing batch files with a line or
  36.           two of CEnvi code, or you may write complete utilities using
  37.           CEnvi.
  38.  
  39. 1.2.  CEnvi unregistered shareware version
  40.  
  41.           This package is the unregistered shareware version of CEnvi.
  42.           Nombas provides this unregistered shareware version of CEnvi so
  43.           that you can try the program for a while before deciding whether
  44.           to buy.  If, after a few weeks of using using this product, you
  45.           think CEnvi will be useful to you and/or your organization then
  46.           use the registration form at the end of this document (or see the
  47.           file: REGISTER.DOC) to register CEnvi.
  48.  
  49. 1.2.1   Why you should register
  50.  
  51.           If you register, then you will receive:
  52.             *The latest version of CEnvi for all supported platforms
  53.               (currently DOS, OS/2, and Windows, with NT support expected
  54.               soon) without the annoying "Please Register" reminder.
  55.             *The CEnvi user's manual (almost 100 pages, including a
  56.               description of the Cmm programming language, a tutorial for
  57.               those who have never programmed, and descriptions and
  58.               examples of the nearly 150 functions included in the CEnvi
  59.               library).
  60.             *Free incremental electronic downloads for new versions of
  61.               CEnvi for all supported operating systems.
  62.             *Unlimited support from Nombas and CEnvi/Cmm users through
  63.               CompuServe (72212,1622), internet (bsn@world.std.com), the
  64.               cenvi-cmm e-mail mailing list (cenvi-cmm@world.std.com), and
  65.               the Nombas BBS (617-391-6595).
  66.             *Access to the growing list of CEnvi utilities and libraries
  67.               (some of which are included in this unregistered shareware
  68.               package, and others are contributed by Nombas and CEnvi/Cmm
  69.               users to the electronic locations described above).
  70.             *Discounts for additional registered version of CEnvi to use
  71.               within your organization.
  72.  
  73. 1.2.2   How to register
  74.  
  75.           See the REGISTER.DOC document that is included with this package
  76.           (and is also duplicated at the end of this document), to purchase
  77.           a registered version of CEnvi.
  78.  
  79. 1.3.  Installing CEnvi, documents, and sample files
  80.  
  81.           To install this package for evaluation
  82.             * Create a directory and then copy all of these files into that
  83.               directory.
  84.             * From within that directory execute CEnvi.exe.
  85.             * At the CEnvi "Code:" prompt enter "Install.cmm" to execute
  86.               the Install program (which is written in Cmm).
  87.             * You may then test CEnvi by trying out the included example
  88.               files and by creating CEnvi code of your own.
  89.  
  90.           For DOS and OS/2 versions, the install.cmm program will set up
  91.           the PATH environment variable to include the directory you
  92.           installed the files in, and will also set the CMMPATH environment
  93.           variable to this directory.  For Windows, install will add the
  94.           CMMPATH profile value in WIN.INI (in the [CEnvi] section), and
  95.           will also add the CMM file extension to the [Extensions] section
  96.           in WIN.INI.
  97.  
  98. 1.3.1   4DOS and 4OS2 users - .cmm executable extension
  99.  
  100.           4DOS and 4OS2 users can directly execute .cmm files by
  101.           associating the .cmm file extension with your CEnvi executable.
  102.           Assuming the CEnvi.exe is in the c:\CENVID directory, then a 4DOS
  103.           user would want to add this line to AUTOEXEC.BAT:
  104.               SET .cmm=C:\CENVID\CEnvi.exe
  105.  
  106. 1.4.  Removing CEnvi unregistered shareware
  107.  
  108.           If, after testing CEnvi for a few weeks, you choose not to
  109.           register this version of CEnvi, then you should remove the
  110.           program from your computer.  (Also please consider telling Nombas
  111.           why CEnvi did not suit your needs; we need such feedback if we
  112.           are to improve the product.)
  113.  
  114.           For all operating systems, the first step for removing CEnvi is
  115.           to delete all the CEnvi files and the directory that you copied
  116.           the files to.  The next step depends on your operating system:
  117.  
  118. 1.4.1   DOS de-installation
  119.  
  120.           Install.cmm made two changes to C:\AUTOEXEC.BAT: the directory
  121.           that CEnvi was in will have been added to your PATH statement,
  122.           and the CMMPATH environment variable will have been added.  To
  123.           de-install CEnvi you must remove the CEnvi directory from the
  124.           PATH statement and you must also delete the "SET CMMPATH=..."
  125.           line.
  126.  
  127. 1.4.2   OS/2 de-installation
  128.  
  129.           Install.cmm made two changes to C:\CONFIG.SYS: the directory that
  130.           CEnvi was in will have been added to your PATH statement, and the
  131.           CMMPATH environment variable will have been added.  To de-install
  132.           CEnvi you must remove the CEnvi directory from the PATH statement
  133.           and you must also delete the "SET CMMPATH=..." line.
  134.  
  135. 1.4.3   Windows de-installation
  136.  
  137.           Install.cmm made two changes to WIN.INI: the CMM profile
  138.           extension was added and the CMMPATH profile string was created.
  139.           To de-install CEnvi you must edit WIN.INI (with NOTEPAD.EXE for
  140.           example) and remove from the [Extensions] section a line similar
  141.           to this:
  142.                CMM=C:\CENVI\CENVI.EXE ^.CMM
  143.           and also remove these line (or lines much like these) from
  144.           WIN.INI:
  145.                [CEnvi]
  146.                CMMPATH=E:\NOMBAS\CENVI\EXAMPLES.WIN
  147.  
  148. 1.5.  Using this package
  149.  
  150. 1.5.1   Unregistered CEnvi shareware executable
  151.  
  152.           The executable in this package, named CEnvi.EXE, is identical to
  153.           the registered version of CEnvi at the time this package was
  154.           created with one exception: this unregistered shareware version
  155.           will occasionally put up a screen to remind you to register your
  156.           copy of CEnvi (see the bottom of this document or REGISTER.DOC).
  157.           Nombas has spent, and will continue to spend, time and resources
  158.           developing and supporting CEnvi and Cmm.  Without your honest
  159.           support Nombas cannot improve and support CEnvi (and pay
  160.           mortgage, feed the kids, pay the doctor, etc...).
  161.  
  162.           It is likely that months have elapsed since this shareware
  163.           package has been put together (see date at the top of this file).
  164.           If so, then the version of CEnvi you receive will be an updated
  165.           version of this one.  At the time of this release, incremental
  166.           improvements have been planned in memory use, speed of execution,
  167.           debugging tools, developer tools, and documentation.
  168.  
  169. 1.5.2   Example programs
  170.  
  171.           The following example programs are included with this shareware
  172.           version of CEnvi.  Those files with a batch extension (.BAT for
  173.           DOS and .CMD for OS/2) can be run by invoking the batch file
  174.           directly.  Those files with the CEnvi source file extension
  175.           (.CMM) are invoked by executing CEnvi with the file name as the
  176.           first argument (e.g. CENVI FranTick.cmm).  Files with different
  177.           (e.g., *.LIB, *.H, *.DAT) are files used by CEnvi some of the
  178.           example programs.
  179.  
  180.           Many of the files will provide help for how to use them if they
  181.           are invoked with "/?" as the only parameter.
  182.  
  183.           All of these example files are here for you to view, study,
  184.           experiment with, and alter for your own use.  The Nombas BBS will
  185.           continue to gather CEnvi and Cmm example files created by Nombas
  186.           or uploaded by CEnvi and Cmm users; so registered users will have
  187.           a large library to choose from (maybe some other CEnvi user has
  188.           already solved your need, or perhaps their need is close to yours
  189.           and you will only have to make small modifications to someone
  190.           else's uploaded CEnvi program). 
  191.  
  192. 1.5.3   DOS example files:
  193.             *AllDirs.bat: Perform a command in this directory and all
  194.               sub-directories
  195.             *AllFiles.bat: Perform a command on all files matching a given
  196.               file specification
  197.             *Ascii.bat: Display the ascii character table
  198.             *BatLoops.bat: Examples of various methods CEnvi can use to
  199.               allow looping within batch files
  200.             *BattMem.cmm: Show values stored in a PC's battery-protected
  201.               memory
  202.             *Border.cmm: Draw a simple border on the screen
  203.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  204.               in the tutorial chapter of the Registered CEnvi Manual.
  205.             *DelTree.bat: Delete a directory tree
  206.             *DirStat.bat: Extract specific fields from a DOS "DIR" listing
  207.             *DiskFree.bat: Display free space on a disk drive
  208.             *DosTime.bat: Show time according to computer's internal clock
  209.             *ErrLev.bat: Execute a command and set the ERRLEV value as the
  210.               return code, which makes ERRORLEVEL a variable
  211.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  212.               sequence
  213.             *FileFind.bat: Wildcard search for files on current drive or on
  214.               all drives
  215.             *Find#.cmm: Extract a number from wordy output; used by
  216.               DirStat.bat
  217.             *FranTick.cmm: Animated tick who drank too much coffee
  218.             *GetUKey.cmm: Display a choice prompt and then set an
  219.               environment variable based on user's selection 
  220.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  221.               tutorial.
  222.             *HexDump.bat: Display hexadecimal dump of a file
  223.             *Install.cmm: Install this registered version of CEnvi.
  224.             *Int16.bat: Display key code from keyboard interrupt 16 hex
  225.             *IsDay_1.bat: One method to check if it is a specific day of
  226.               the week
  227.             *IsDay_2.bat: Another method to check if it's a specific day of
  228.               the week
  229.             *IsItFri.bat: Is it Friday?
  230.             *KbdBuf.bat: Alter the size of the keyboard buffer
  231.             *KbdRate.bat: Alter the typematic rate of the keyboard
  232.             *KeyCode.bat: Display keycode of any key pressed
  233.             *KeyState.bat: Get or set the state of the NumLock, CapsLock,
  234.               or Insert keys
  235.             *KeyStuff.bat: Stuff characters into the keyboard buffer
  236.             *MemBlock.bat: Trace through DOS's allocated memory blocks
  237.             *Mouse.bat: Demonstrate reading a mouse's position and state
  238.             *MultiDir.bat: DOS's "DIR" command allowing multiple file
  239.               specifications
  240.             *NumLock.bat: Set the NumLock key on
  241.             *OneADay.bat: Perform any command(s) no more than once per day
  242.             *OptParms.lib: Library of routines for parsing the optional
  243.               parameters for executing a program. #included in other files
  244.             *PathAdd.bat: Add a directory to your PATH environment
  245.               variable.
  246.             *PathDel.bat: Remove a directory from your PATH environment
  247.               variable
  248.             *PathStak.bat: Multi-level save or restore of current drive and
  249.               directory so that you can change drives and directories and
  250.               still return to this one
  251.             *PathSubs.bat: Use DOS's SUBST command to shorten your PATH
  252.               environment variable so that more paths can be fit with DOS'
  253.               127-byte limit
  254.             *Primes.bat: Demonstrate automatic array allocation for
  255.               calculating prime numbers
  256.             *PrmptDay.bat: Change command-line-prompt to display today's
  257.               date
  258.             *Quote.bat: Choose a "profound" quote at random
  259.             *REBOOT_1.BAT: One method to reboot your computer
  260.             *REBOOT_2.BAT: Another method to reboot your computer
  261.             *Restrict.cmm: Allow a limited subset of DOS commands
  262.             *RunTime.bat: Rudimentary scheme for executing a command at a
  263.               certain time of day.
  264.             *Scrandom.bat: Use Screen.lib to draw randomly colored squares
  265.               around the screen
  266.             *Screen.lib: Library, #included in other files, for screen
  267.               output: colors, boxes, lines, etc...
  268.             *ScrnSave.bat: Use Screen.lib to save screen to a file
  269.             *SortLen.bat: Sort any file based on line length
  270.             *Sound.bat: Play a frequency for a given time period
  271.             *Tee.cmm: Save screen output to a file while it is being
  272.               displayed on the screen
  273.             *ValidDir.bat: Verify if a directory is valid
  274.             *Wait.bat: Pause and do not return for specified number of
  275.               seconds
  276.             *WinShell.bat: Start windows with a specific shell.  Run
  277.               Windows for a single program.
  278.  
  279. 1.5.4   OS/2 example files:
  280.  
  281.           For many of these functions, you must ensure that CEnvi2PM.exe is
  282.           accessible (in the current directory or in a directory in the
  283.           search PATH).  CEnvi2PM.exe is a small program used transparently
  284.           by CEnvi.exe when the PMxxxxx() calls are used to PM-specific
  285.           functions.
  286.             *AllDirs.cmd: Perform a command in this directory and all
  287.               sub-directories
  288.             *AllFiles.cmd: Perform a command on all files matching a given
  289.               file specification
  290.             *Ascii.cmd: Display the ascii character table
  291.             *BatLoops.cmd: Examples of various methods CEnvi can use to
  292.               allow looping within batch files
  293.             *BattMem.cmm: Show values stored in a PC's battery-protected
  294.               memory
  295.             *BckGrnd.cmd: Specify a new file as your desktop background
  296.               image
  297.             *BigFont.cmd: Chooses the largest font for a Windowed OS/2
  298.               session.  Uses KeyPush.lib.
  299.             *Border.cmm: Draw a simple border on the screen
  300.             *Bouncy.cmd: Start a bouncy OS/2 Command Window. This
  301.               demonstrates moving windows and silliness.
  302.             *BoxFont.cmd: Show and alter default font for DOS and OS/2
  303.               command-line windows
  304.             *BugHunt.cmd: Example for using the ClipBrd.lib routines.
  305.               Constantly scan clipboard for "bug" in clipboard text
  306.             *CBPrint.cmd: Send contents of the clipboard to the printer
  307.             *CEnviSet.cmd: This file can be used instead of CEnvi.exe if
  308.               you are using environment variables as Cmm variables and need
  309.               them to be changed in the current OS/2 environment.
  310.             *ClipBrd.lib: Library of routines for reading from or writing
  311.               to the Windows clipboard
  312.             *ClipSort.cmd: Sort text in-place within the clipboard
  313.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  314.               in the tutorial chapter of the Registered CEnvi Manual.
  315.             *Comm.lib: Serial communications routines
  316.             *DelTree.cmd: Delete a directory tree
  317.             *Devices.cmd: Show status of system devices.
  318.             *DevIOCtl.lib: Function library for OS/2's DosDevIOCTL
  319.               functions
  320.             *DirStat.cmd: Extract specific fields from an OS/2 "DIR"
  321.               listing
  322.             *DiskFree.cmd: Display free space on a disk drive
  323.             *DlgCtrl.lib: Library of routines for interactive with PM
  324.               dialog boxes and other windows with sub-windows - this
  325.               library is only in its early stages
  326.             *DoFiles.cmd: Perform any command on a list of files selected
  327.               from a file dialog box
  328.             *DoMenu.cmd: Execute any menu selection of a PM application,
  329.               based on the name of the window and the menu text
  330.             *DOS.cmd: Perform DOS command from an OS/2 session, with the
  331.               option to "see" output of the command; mirrors OS2.BAT
  332.             *DosCalls.lib: Example library of "wrapper" function calls to
  333.               OS/2 API calls in the DosCalls library.  This file is
  334.               "#include"ed in many of the other example files.
  335.             *DOSslave.cmd: Works with OS2.BAT to allow DOS session to
  336.               perform OS/2 commands, and even "see" the output
  337.             *DOS_BOSS.lib: Library of routines to interactively control DOS
  338.               windows applications: can work with ServeOS2.com
  339.             *DOS_Echo.cmd: Demonstrate DOS_BOSS.LIB by shadowing a DOS box
  340.               from and OS/2 box
  341.             *DumpIni.cmd: Display profile settings from a .INI file; uses
  342.               Profile.lib
  343.             *EditCmd.cmd: Use PM's file dialog (via FileDlg.lib) to select
  344.               a *.cmd file to edit.
  345.             *EPM.cmd: Wrapper for EPM.EXE for C programmers which will
  346.               bring in related *.c, *.H and *.asm files
  347.             *ErrLev.cmd: Execute a command and set the ERRLEV value as the
  348.               return code, which makes ERRORLEVEL a variable
  349.             *ExamineW.cmd: Display lots of data about any PM window on the
  350.               desktop, and sub-windows (this file in early stages)
  351.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  352.               sequence
  353.             *FileDlg.lib: A simple interface to the WinFileDlg() PM
  354.               function.  This library file is #include'd in some of the
  355.               other CEnvi sample files.
  356.             *FileFind.cmd: Wildcard search for files on current drive or on
  357.               all drives
  358.             *FileIO.lib: Function to interface directly with OS/2's File IO
  359.             *Find#.cmm: Extract a number from wordy output; used by
  360.               DirStat.bat
  361.             *FranTick.cmm: Animated tick who drank too much coffee
  362.             *GetUKey.cmd: Display a choice prompt and then set an
  363.               environment variable based on user's selection 
  364.             *GiveMem.lib: Library of routines for shareing memory with
  365.               other applications whose memory is otherwise "protected"
  366.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  367.               tutorial.
  368.             *HexDump.cmd: Display hexadecimal dump of a file
  369.             *IDLE.cmd: Change process priority to run a CEnvi program only
  370.               during system idle time.
  371.             *IdleProg.cmd: Execute a program in the background; i.e., run
  372.               only during system idle time.
  373.             *Install.cmm: Install this registered version of CEnvi.
  374.             *IsDay_1.cmd: One method to check if it is a specific day of
  375.               the week
  376.             *IsDay_2.cmd: Another method to check if it's a specific day of
  377.               the week
  378.             *IsItFri.cmd: Is it Friday?
  379.             *KbdRate.cmd: Alter the typematic rate of the keyboard; in many
  380.               cases faster than OS/2 Keyboard tool can set it
  381.             *KeyCode.cmd: Display keycode of any key pressed
  382.             *KeyGhost.cmd: Sample for using KeyPush.lib to determine if
  383.               CEnvi is worth the price of registration.
  384.             *KeyPush.cmd: Send keystroke commands directly to a window by
  385.               window title; a quick interface into KeyPush.lib
  386.             *KeyPush.lib: Library of routines for sending keystrokes to PM
  387.               or Windowed applications.
  388.             *KeyState.cmd: Get or set the state of the NumLock, CapsLock,
  389.               or Insert keys for current session or for the whole WPS
  390.             *Kill.cmd: Terminate a running process by Process ID, Window
  391.               title, full name, or partial name
  392.             *MenuCtrl.lib: Library of routines for interactive with PM
  393.               menus
  394.             *MsgBox.lib: A wrapper library for the PM WinMessageBox()
  395.               function.  This file is #include'd in other CEnvi sample
  396.               files.
  397.             *MsgBoxes.cmd: Show various message box types using the
  398.               function in MsgBox.lib.
  399.             *MultiDir.cmd: OS/2's "DIR" command allowing multiple file
  400.               specifications
  401.             *NamePipe.lib: Library for OS/2 Named Pipes
  402.             *NekoSavr.cmd: This basic screen saver program runs NEKO.EXE,
  403.               OS/2's cat & mouse game, when the mouse keys and keyboard
  404.               have been idle.
  405.             *NumLock.cmd: Turn on NUMLOCK key once, or maintain NUMLOCK ON.
  406.               A shadow of NumLock.cmd can be put in startup folder to
  407.               default computer to NumLock ON. "NumLock 1000" will check
  408.               every second to make sure that NUMLOCK is still set.
  409.             *OneADay.cmd: Perform any command(s) no more than once per day
  410.             *OptParms.lib: Library of routines for parsing the optional
  411.               parameters for executing a program. #included in other files
  412.             *OS2.bat: Work with DOSslave.cmd to allow DOS session to
  413.               execute OS/2 commands, with an option to "see" the result
  414.             *OS2Demo.cmd: Combine many of CEnvi's utilities to create a
  415.               standalone demo of the OS/2 operating system: multiple
  416.               windows, configurations, sharing, etc...  This program takes
  417.               a little bit of work to set up BUT IT'S WORTH IT!
  418.             *OS2Time.cmd: Show time according to computer's internal clock
  419.             *Parents.cmd: Show hierarchical list of ancestor's process ID's
  420.               and names
  421.             *PathAdd.cmd: Add a directory to your PATH environment
  422.               variable.
  423.             *PathDel.cmd: Remove a directory from your PATH environment
  424.               variable
  425.             *PathStak.cmd: Multi-level save or restore of current drive and
  426.               directory so that you can change drives and directories and
  427.               still return to this one
  428.             *PMdll.lib: Example library of "wrapper" routines to function
  429.               in the PM DLL (Presentatiom Manager Dynamic Link Library).
  430.               This file is "#include"ed in many of the other example files.
  431.             *Primes.cmd: Demonstrate automatic array allocation for
  432.               calculating prime numbers
  433.             *PrmptDay.cmd: Change command-line-prompt to display today's
  434.               date
  435.             *ProcList.cmd: Show list of all running processes; their names
  436.               and ID's
  437.             *Profile.lib: Function library for accessing Profiles; i.e.
  438.               .INI files
  439.             *Quote.cmd: Choose a text-mode "profound" quote at random
  440.             *QuotePM.cmd: Choose a PM-mode "profound" quote at random
  441.             *RndBckgr.cmd: Randomly select desktop background, at specified
  442.               interval, from a list of graphic file specifications
  443.             *RunTime.cmd: Rudimentary scheme for executing a command at a
  444.               certain time of day.
  445.             *ServeOS2.com: DOS TSR to work with DOS_BOSS.LIB or complete
  446.               keyboard control of DOS sessions
  447.             *Session.cmd: Replace OS/2's START command for greater control
  448.               of starting sessions, including name, position, font,
  449.               notebook settings, etc...
  450.             *Sessions.cmd: batch file to demonstarte various uses of
  451.               Session.cmd
  452.             *ShutDown.cmd: Automated shutdown of OS/2 system; you should
  453.               edit this file to match your system setup
  454.             *SortLen.cmd: Sort any file based on line length
  455.             *Sound.cmd: Play a frequency for a given time period
  456.             *Switch.cmd: Switch foreground application to another process
  457.               base on process ID, full name, or partial name
  458.             *SysSetup.cmd: Open the OS/2 Setup folder on the desktop
  459.             *Terminal.cmd: A VERY basic terminal program; demonstrates
  460.               COMM.LIB
  461.             *Threads.cmd: Display list of all threads in all running
  462.               processes
  463.             *UnHang.cmm: Monitor your system to detect OS/2 "hangs", where
  464.               the workplace shell stops responding, then kill or otherwise
  465.               handle the application that is causing the problem
  466.             *ValidDir.cmd: Verify if a directory is valid
  467.             *Wait.cmd: Pause and do not return for specified number of
  468.               seconds
  469.             *WinList.cmd: Display list of all PM windows
  470.             *WinMsg.lib: Routines to send or post messages to PM windows
  471.             *WinSet.cmd: Set the position, size, state, etc... of a PM
  472.               Window
  473.             *WinTools.cmd: Demonstrate many of the capabilities of
  474.               WinTools.lib
  475.             *WinTools.lib: Library of routines for manipulating PM windows
  476.               by name or by handle
  477.             *WIN_Boss.lib: work with CEnvi for Windows' ServeOS2.cmm
  478.               program to all full control of Windows applications from an
  479.               OS/2 script
  480.             *WPFolder.cmd: Open a desktop folder for any specified
  481.               directory and optionally switch to that window
  482.  
  483. 1.5.5   Windows example files:
  484.  
  485.           The following CEnvi source programs can be run by associating the
  486.           .cmm file extension with CEnvi.exe.  This can be done by using
  487.           the File Manager: select one of these .cmm files then choose
  488.           File/Association and select the full path to CEnvi.exe.  After
  489.           this, you can run any of these exmple files simply by
  490.           double-clicking on it.
  491.             *Ascii.cmm: Display the ascii character table
  492.             *BattMem.cmm: Show values stored in a PC's battery-protected
  493.               memory
  494.             *BootEd1.cmm: Start NotePad to edit c:\AutoExec.bat and
  495.               C:\Config.sys using Windows DLL's.
  496.             *BootEd2.cmm: Start NotePad to edit c:\AutoExec.bat and
  497.               C:\Config.sys using CEnvi's spawn() function.
  498.             *Border.cmm: Draw a simple border on the screen
  499.             *BugHunt.cmm: Example for using the ClipBrd.lib routines.
  500.               Constantly scan clipboard for "bug" in clipboard text
  501.             *ClipBrd.lib: Library of routines for reading from or writing
  502.               to the Windows clipboard
  503.             *ClipSort.cmm: Sort text in-place within the clipboard
  504.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  505.               in the tutorial chapter of the Registered CEnvi Manual.
  506.             *CmmGroup.cmm: Create a CEnvi Programs group in Presentation
  507.               Manager with all of the .CMM files in it
  508.             *Comm.lib: Simplified function interface into Windows' serial
  509.               communication routines
  510.             *DDE.lib: Library of common routines and definitions for
  511.               Dynamic Data Exchange (DDE)
  512.             *DDEcli.lib: Library of routines for a DDE client
  513.             *DDEsrv.lib: Library of routines for a DDE server
  514.             *DlgCtrl.lib: Library of routines for interactive with Windows
  515.               dialog boxes and other windows with sub-window
  516.             *DosTime.cmm: Show time according to computer's internal clock
  517.             *ExamineW.cmd: Display lots of data about any active window and
  518.               its sub-windows
  519.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  520.               sequence
  521.             *FranTick.cmm: Animated tick who drank too much coffee
  522.             *GDI.cmm: Demonstrate some of Windows' graphics functions from
  523.               GDI.lib
  524.             *GDI.lib: Library of a few of Windows' graphics routines
  525.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  526.               tutorial.
  527.             *HexDump.cmm: Display hexadecimal dump of a file
  528.             *Icons.cmm: Minimize all windows.  Demonstrate PostMessage()
  529.               from Message.lib.
  530.             *IdleTime.cmm: "ScreenSaver" - Show clock if computer is idle
  531.             *Install.cmm: Install this registered version of CEnvi.
  532.             *KeyCode.cmm: Display keycodes returned by getch().
  533.             *KeyGhost.cmm: Demonstrate how to use KeyPush.lib to control
  534.               other applications.
  535.             *KeyPush.lib: Library of routines created for passing
  536.               keystrokes to a window with the current focus.
  537.             *MenuCtrl.lib: Library of routines for interactive with menus
  538.             *Message.lib: Wrapper for Windows' PostMessage() and
  539.               SendMessage() function to send commands to windows.
  540.             *MsgBox.lib: A wrapper library for Windows' MessageBox()
  541.               function.  This file is #include'd in other CEnvi sample
  542.               files.
  543.             *MsgBoxes.cmm: Show various message box types using the
  544.               function in MsgBox.lib.
  545.             *NumLock.cmm: Set the NUMLOCK key ON
  546.             *OpenCmm.cmm: Use Windows' common dialog (via PickFile.lib) to
  547.               select a *.cmm file to edit.
  548.             *OptParms.lib: Library of routines for parsing the optional
  549.               parameters for executing a program. #included in other files
  550.             *PGroups.cmm: list all of the groups and items Program Manager;
  551.               uses ProgMan.lig
  552.             *PickFile.lib: A simple interface to the GetOpenFileName()
  553.               function in the Windows Common Dialog DLL.  This library file
  554.               is #include'd in some of the other CEnvi sample files.
  555.             *PMCorner.cmm: Minimize Program Manager and then move its icon
  556.               to the lower-right corner of the screen.
  557.             *PMItems.cmm: Replace Program Manager with a tiny button in
  558.               upper-left corner for access to all PM items
  559.             *PongTime.cmm: Bounce the Windows clock mini-app around
  560.             *Profile.lib: Function library for accessing Profiles; i.e.
  561.               .INI files
  562.             *ProgMan.lib: Library of routines using DDE to communication
  563.               with Program Manager
  564.             *Quote.cmm: Choose a "profound" quote at random
  565.             *RunTime.cmm: Schedule a command to execute at a specified hour
  566.               and minute.
  567.             *ServeOS2.cmm: Work with CEnvi for OS/2 and WIN_BOSS.LIB to
  568.               control Windows sessions from OS/2
  569.             *Terminal.cmm: A simple terminal program; demonstrate some of
  570.               the functions in COMM.lib
  571.             *WhoRYou.cmm: Design and implement a dialog box using CEnvi's
  572.               MakeWindow() and DoWindows() functions
  573.             *WinBeep.cmm: Call Windows' MessageBeep() function.
  574.             *Window.lib: A few functions and many defined values useful for
  575.               CEnvi's MakeWindow(), BreakWindow(), and DoWindows()
  576.               functions
  577.             *WinExec.lib: A wrapper library for Windows' WinExec()
  578.               function.  This file is #include'd in other CEnvi sample
  579.               files.
  580.             *WinExecs.cmm: Demonstration of Windows' WinExec() function
  581.               using the wrapper from WinExec.lib.
  582.             *WinList.cmm: Show a list of all Windows, their handles, and
  583.               their children.
  584.             *WinMsg.cmm: Demonstrate how to make a window, and show all the
  585.               messages that go to that window
  586.             *WinShell.bat: Start windows with a specific shell.  Run
  587.               Windows for a single program.  This use CENVI.EXE for DOS.
  588.             *WinTools.cmm: Demonstrate many of the capabilities of
  589.               WinTools.lib
  590.             *WinTools.lib: Library of routines for directly manipulating
  591.               windows by name or by handle
  592.             *WinUtil.lib: A small selection of utilities that may be
  593.               #include'd in CEnvi code to get simple access to Windows DLL
  594.               functions.
  595.  
  596. 1.6.  CEnvi - A Cmm Interpreter
  597.  
  598.           This section describes the CEnvi program, and describes the
  599.           various methods for use CEnvi.exe to execute Cmm programs.
  600.  
  601. 1.6.1   What is CEnvi?
  602.  
  603.           CEnvi is the first (and so far only) application to implement the
  604.           Cmm programming language.  CEnvi is a Command-line version of a
  605.           Cmm interpreter, and it can use Environment variables as if they
  606.           were global Cmm variables.  CEnvi contains a reasonable facsimile
  607.           of the standard C library, and can link at runtime to external
  608.           Cmm libraries.
  609.  
  610.           The "Envi" and the "C" in CEnvi reflects the envy that computer
  611.           professionals often feel when they are working on a computer that
  612.           does not have a complete C programming environment.  "Envi" also
  613.           refers to the environment variables that CEnvi attempts to work
  614.           with as if they were regular Cmm variables.
  615.  
  616.           Like all implementations for Cmm, CEnvi is portable between
  617.           operating systems.  It is currently testing under DOS, OS/2, and
  618.           Windows, and other OS ports are in the works.
  619.  
  620. 1.6.2   Environment Variables
  621.  
  622.           Variables in all UPPERCASE letters are taken from the environment
  623.           variables.  Environment variables are treated like other
  624.           variables except that they don't need quotes around them to
  625.           default to being strings if they don't match another type.
  626.  
  627.           To the source code, the only difference between a variable and an
  628.           environment variable is that environment variables are all
  629.           UPPER_CASE letters.  When the environment variable is first used
  630.           it is read from the environment block and some assumptions are
  631.           made about what kind of variable it is; this can lead to problems
  632.           when I=666 is interpreted as the number 666 when really it maybe
  633.           should have been the string "666".  Before the program exits, all
  634.           environment variables used by the code are then written to the
  635.           environment block.
  636.  
  637.           In some implementations (CEnvi for DOS, for example) the
  638.           environment variables remain changed even after the Cmm
  639.           interpreter exits.  In other cases, special kludges must be added
  640.           to alter a parent process' environment variables (see ESet() for
  641.           OS/2).
  642.  
  643. 1.6.3   Special Environment Variables
  644.  
  645.           These environment variables affect where CEnvi looks for source
  646.           files:
  647.             *CMMPATH: This environment will be checked for directories to
  648.               search for include files if the include file is not in the
  649.               current directory.  For Windows, this value may come from the
  650.               CMMPATH profile value in WIN.INI (in the [CEnvi] section).
  651.             *PATH: Batch-file source files (see below) will be searched in
  652.               these directories if not found in the current directory.
  653.             *CENVI_ESET: In those environment for which CEnvi cannot
  654.               covertly alter the environment variables of the command
  655.               interpreter (e.g., OS/2), this environment variable specifies
  656.               a file name.  CEnvi will write the strings necessary for the
  657.               command interpreter to set environment variables as altered
  658.               by your Cmm code.  See the description of ESet() for more
  659.               information about this command.
  660.  
  661. 1.6.4   Executing Code as command-line Input Parameters
  662.  
  663.           If a Cmm program is very short, then it can be executed wholly
  664.           from the command line.  For example, here is the famous hello
  665.           world program executed from the cli prompt:
  666.               CEnvi main() { printf("Hello world!"); }
  667.           which can be written more conisely under Cmm rules as:
  668.               CEnvi printf("Hello world!")
  669.  
  670.           You may have to keep in mind bahavior of the cli when inputting
  671.           code.  It is sometimes necessary to put quotes around code to
  672.           keep symbols from being interpreted by the cli, as in this
  673.           example:
  674.               CEnvi "for(i=0;i<10;i++) printf("%d\n",i)"
  675.           where the quotes are necessary to prevent the cli from
  676.           interpreting the "<" as file redirection.
  677.  
  678.           Also, in batch files (DOS, OS/2) you need to remember that "%"
  679.           has special meaning for the batch file processor, and so the
  680.           above line in a batch would have to be written as:
  681.               CEnvi "for(i=0;i<10;i++) printf("%%d\n",i)"
  682.  
  683. 1.6.5   Executing *.CMM Source File Code
  684.  
  685.           A file with the extension ".CMM", if the file name is given as
  686.           the first parameter to CEnvi.exe, is considered by CEnvi to be
  687.           pure CMM source code.  This file with the .CMM extension is
  688.           expected to be a plain Cmm source file, just as a C compiler
  689.           expects a file with the .C extension to be C source code.  CEnvi
  690.           will check the current directory for the .CMM file, and then
  691.           check directories in the PATH environment variable.  Any
  692.           arguments passed to CEnvi.exe after the .CMM source name are
  693.           given to the main(argc,argv) function in the source, if there is
  694.           one.  So the hellow.cmm program can look identical to the
  695.           hellow.c program, and when you run CEnvi.exe hellow.cmm you get
  696.           the same output.  If you run
  697.               CEnvi.exe FOO.CMM One Two Three
  698.           the main function in FOO.CMM would get argc=4 and
  699.           argv[0]="FOO.CMM" and argv[3]="THREE".
  700.  
  701.           This all means that if you were to have an executable FOO.EXE
  702.           that is similar to FOO.CMM, then "FOO.EXE" is interchangeable
  703.           with "CENVI FOO.CMM", i.e.,
  704.               FOO.EXE arg1 arg2 arg3
  705.           is the same as:
  706.               CENVI FOO.CMM arg1 arg2 arg3
  707.  
  708.           In OS/2 or windows or other environments where file extensions
  709.           can be associated with programs, you may want to associate the
  710.           .CMM extension with CEnvi.exe, so that double-clicking on
  711.           HELLOW.CMM will act identically to double-clicking on the
  712.           compiled-and-linked HELLOW.EXE.
  713.  
  714. 1.6.6   Batch-File Kludge
  715.  
  716.           The most convenient method for executing Cmm source code from the
  717.           DOS or OS/2 command line is sort of a kludge: if the first
  718.           argument to CEnvi is the name of a batch file, then CEnvi reads
  719.           that batch file and accepts as source all the code between the
  720.           lines "GOTO CENVI_EXIT" and ":CENVI_EXIT", and passes the command
  721.           line arguments to main(argc,argv).  This is very similar to
  722.           executing:
  723.               CEnvi.exe #include'foo,bat,,GOTO CENVI_EXIT,:CENVI_EXIT'
  724.           except that the '#include' statement is handled automatically by
  725.           CEnvi, and the rest of the command-line arguments are passed to
  726.           main().
  727.  
  728.           Note that ".bat" is the DOS version of the batch file name
  729.           extension.  This name is different for different operating
  730.           systems.
  731.  
  732.           In this way, a batch file can be run exactly like a .EXE file,
  733.           and the command arguments are passed to main in the same way.  If
  734.           the full path of the batch file is not supplied, then CENvi will
  735.           look in the current directory and then in directories in the
  736.           PATH.
  737.  
  738.           Here is an example of an OS/2 batch file that expects any number
  739.           (up to 9) of integers and sets the SUM environment variable to
  740.           the values added together.  (It calls CEnviSet instead of CEnvi
  741.           directly in order to set the environment variable.)
  742.  
  743.               @echo off
  744.               REM *********************************************************
  745.               REM *** SUM.BAT - Use CEnvi to sum lots of numbers together,*
  746.               REM ***           setting the SUM environment variable to   *
  747.               REM ***           the result of adding all the numbers.     *
  748.               REM *********************************************************
  749.               call CEnviSet %0.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
  750.               GOTO CENVI_EXIT
  751.  
  752.               main(argc,argv)
  753.               {
  754.                 SUM = 0;
  755.                 for ( i = 1; i < argc; i++ )
  756.                 SUM += atoi(argv[i])
  757.               }
  758.  
  759.               :CENVI_EXIT
  760.  
  761. 1.6.7   EXTPROC: *.CMD Source file (For OS/2)
  762.  
  763.           Under the OS/2 command processor, you can define an external
  764.           processor to process a batch (*.cmd) file if the first statement
  765.           is EXTPROC.  EXTPROC is followed by the name of the processor,
  766.           which in this case will be "CEnvi".  This is an example file,
  767.           ARGS.CMD, of a program to display all input parameters:
  768.  
  769.               EXTPROC CEnvi
  770.  
  771.               main(argc,argv)
  772.               {
  773.                 for ( i = 0; i < argc; i++ )
  774.                 printf("Input argument %d = \%s\n",i,argv[i]);
  775.               }
  776.  
  777. 1.6.8   REXX-File Kludge (For OS/2)
  778.  
  779.           Similar to the Batch-File Kludge described above, if the first
  780.           argument to CEnvi is the name of a REXX source file then CEnvi
  781.           automatically executes the code between "SIGNAL CENVI_EXIT" and
  782.           "CENVI_EXIT:".  This example Rexx file for OS/2 behaves the same
  783.           as the previous batch program example (CEnviSet.cmd is an OS/2
  784.           batch file that helps run Cmm files if environment variables need
  785.           to be altered--see ESet in the OS2Lib appendix):
  786.               /***********************************************************
  787.                *** SUM.CMD - Use CEnvi to sum lots of numbers together,***
  788.                ***           setting the SUM environment variable to   ***
  789.                ***           the result of adding all the numbers.     ***
  790.                ***********************************************************/
  791.               'call CEnviSet %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9'
  792.               SIGNAL CENVI_EXIT
  793.  
  794.               main(argc,argv)
  795.               {
  796.                 SUM = 0;
  797.                 for ( i = 1; i < argc; i++ )
  798.                 SUM += atoi(argv[i])
  799.               }
  800.  
  801.               CENVI_EXIT:
  802.  
  803. 1.6.9   CMM File Association and Drag-and-Drop (OS/2)
  804.  
  805.           You can associate CEnvi.exe with .cmm files through the settings
  806.           notebook of CEnvi.exe.  This lets you executed any CEnvi *.cmm
  807.           file simply by double-clicking its icon in the desktop.
  808.  
  809.           A Cmm program can be set up as a Workplace Shell program that
  810.           accepts drag and drop.  To do this, drag a program template out
  811.           of the templates folder and place it on the desktop where you
  812.           want your Cmm program to run from.  In program settings for this
  813.           program object set the program name to the path and file
  814.           specification for CEnvi.exe (e.g., "C:\CMM\CEnvi.exe").  Set
  815.           Parameters to the full source and file name of the Cmm file
  816.           (e.g., "C:\CMM\CZIP.cmm").  Then rename the program object to
  817.           whatever you want (e.g., "CZIP").  Then whenever you drag a file
  818.           onto that object then the filename will be the second argument to
  819.           main().
  820.  
  821. 1.6.10  CMM File Association and Drag-and-Drop (Windows)
  822.  
  823.           You can associate Cmm files with CEnvi.exe by using the File
  824.           Manager: select a .cmm file then choose File/Association and
  825.           select the full path to CEnvi.exe.  After this, you can run any
  826.           of *.cmm program simply by double-clicking on it.
  827.  
  828. 1.6.11  /BIND= Create Stand-Alone Cmm Executables
  829.  
  830.           The CEnvi /BIND option allows you to create stand-alone,
  831.           royalty-free executables from your Cmm code.  The result of /BIND
  832.           is a binary executable file that operates the same as if CEnvi
  833.           were invoked as an interpreter, except that CEnvi.exe is not
  834.           needed to execute the bound file, because CEnvi.exe and your Cmm
  835.           code are bound together in the created executable.
  836.  
  837.           The following example creates an executable named HELLOW.EXE that
  838.           would print "Hello world!".
  839.  
  840.               CEnvi /BIND=HELLOW printf("Hello world!");
  841.  
  842.           As another example, you could create a stand-alone editor, which
  843.           we'll call CMMEDIT.EXE, from the result of the CEnvi tutorial
  844.           with the following command:
  845.  
  846.               CEnvi /BIND=CMMEDIT.EXE CMMEDIT.CMM
  847.  
  848.           Now running "CMMEDIT.EXE C:\AUTOEXEC.BAT" from the command line
  849.           would be identical to executing "CENVI.EXE CMMEDIT.CMM
  850.           C:\AUTOEXEC.BAT".
  851.  
  852. 1.6.12  /BIND for OS/2 and CEnvi2PM.EXE
  853.  
  854.           When you /BIND Cmm source code that contains calls to
  855.           PMDynamicLink(), or other PMxxx() calls that invoke CEnvi2PM.exe,
  856.           the resulting executable will still require CEnvi2PM.exe.  So
  857.           users running the bound executable will still need CEnvi2PM.exe
  858.           in a directory of their search path.  CEnvi2PM.exe may be
  859.           distributed royalty-free.
  860.  
  861. 1.6.13  /BIND for Windows
  862.  
  863.           The simplest method for using /BIND in Windows is to execute
  864.           CEnvi.exe, and then to enter the /BIND statement and Cmm source
  865.           name from the CEnvi command prompt.  For example, to turn
  866.           WhoRYou.cmm into the stand-alone WhoRYou.exe, you would execute
  867.           CEnvi.exe and then enter the following at the CEnvi "Code:"
  868.           prompt:
  869.  
  870.               Code: /BIND=WhoRYou WhoRYou.cmm
  871.  
  872. -------------------------------- FILE LIST --------------------------------
  873. The CEnvi Unregistered Shareware package includes the files in the
  874. following list.  You are not permitted to upload or otherwise transfer
  875. copies of any registered version of CEnvi that does not include all of the
  876. files in this list.
  877.  
  878. *CENVI.EXE: CEnvi shareware executable for DOS, OS/2, or Windows.
  879. *CENVI2PM.EXE: Gateway program, executed trasnparently by CEnvi, for access
  880.   to PM-dependent system calls (OS/2 version only).
  881. *CENVI.DOC: CEnvi Shareware Manual, Chapter 1: CEnvi Unregistered Shareware
  882. *CMMTUTOR.DOC: CEnvi Shareware Manual, Chapter 2: Cmm Language Tutorial
  883. *CMM_VS_C.DOC: CEnvi Shareware Manual, Chapter 3: Cmm versus C, for C
  884.   Programmers
  885. *CENVILIB.DOC: CEnvi Shareware Manual, Chapter 4: Function Library
  886. *LICENSE.DOC: CEnvi Unregistered Shareware License Agreement
  887. *README.DOC: Introductory file. Read this first for quick intallation.
  888. *REGISTER.DOC: CEnvi registration form
  889. *INSTALL.CMM: Cmm source file for installing this shareware version
  890. * *.CMM, *.CMD, *.BAT, *.LIB: Many many sample programs using CEnvi.  See
  891.   CENVI.DOC for a complete list.
  892.  
  893. ----------------------------- REGISTRATION -------------------------------
  894. This is a shareware release.  Please register.  As a registered CEnvi user
  895. you will receive:
  896. *The latest version of CEnvi for all supported platforms (currently DOS,
  897.   OS/2, and Windows).
  898. *The CEnvi user's manual (almost 100 pages, including a description of the
  899.   Cmm programming language, a tutorial for those who have never programmed,
  900.   and descriptions and examples of the over 150 functions included in the
  901.   CEnvi library).
  902. *Free incremental electronic downloads for new versions of CEnvi for all
  903.   supported operating systems.
  904. *Unlimited support from Nombas and CEnvi/Cmm users through CompuServe
  905.   (72212,1622), internet (bsn@world.std.com), the cenvi-cmm e-mail mailing
  906.   list (cenvi-cmm@world.std.com), and the Nombas BBS
  907.   (ATDT16173916595,,,,,44444).
  908. *Access to the growing list of CEnvi utilities and libraries (some of which
  909.   are included in this unregistered shareware package, and others are
  910.   contributed by Nombas and CEnvi/Cmm users to the electronic locations
  911.   described above).
  912.  
  913. There are three ways to register CEnvi version 1.009: 
  914.  
  915. ***************************************************************************
  916. ********* REGISTRATION METHOD 1: CENVI MAIL-IN REGISTRATION FORM **********
  917. ***************************************************************************
  918. Please fill out and mail in this form, along with payment.
  919.  
  920. Where did you get CEnvi? ______________________________________________
  921.  
  922. Name: _________________________________________________________________
  923.  
  924. Company: ______________________________ Position: _____________________
  925.  
  926. Address: ______________________________________________________________
  927.  
  928. _______________________________________________________________________
  929.  
  930. ______________________________________________________________________
  931.  
  932. Country: _________________________   (add ZIP code if applicable)
  933.  
  934. Phone: ___________________________  EMail: ______________________________
  935.  
  936.           Diskette size: [  ] 3.5"   [  ] 5.25"
  937.  
  938. CEnvi Registered License & Manual ... Quantity _____ x $38.00 = $ _________
  939. License fee for additional CEnvi users at your
  940. organization (does not include additional manual
  941. or diskettes)... Additional simultaneous users _____ x $15.00 = $ _________
  942. Additional CEnvi Manuals ............ Quantity _____ x $10.00 = $ _________
  943. Shipping outside USA, Canada, or Mexico  $4.00 ................ $ _________
  944.                                                        Subtotal $ _________
  945. Massachusetts residents please add 5% sales tax ............... $ _________
  946.  
  947.                                                           Total $ _________
  948.  
  949. Include a check or money order for this total, IN U.S. FUNDS AND DRAWN ON A
  950. U.S. BANK, payable to Nombas, or supply the following credit card payment
  951. information.  Credit cards orders will be processed through a distributor:
  952. Custom Computer Systems of Medford, MA.
  953.  
  954. Credit card orders (circle one): MasterCard / Visa / American Express
  955.  
  956.                                  Discover / Carte Blanche / Diners Club
  957.  
  958.     Card Number _____________________________________  Expires ____________
  959.  
  960.     Exact name on card (print) ____________________________________________
  961.  
  962.     Signature (REQUIRED) __________________________________________________
  963.  
  964. Mail this form, along with payment or credit information, to:
  965.                Nombas
  966.                P.O. Box 875
  967.                Medford, MA  02155   USA
  968.  
  969.  
  970. ***************************************************************************
  971. ******** REGISTRATION METHOD 2: COMPUSERVE ELECTRONIC REGISTRATION ********
  972. ***************************************************************************
  973. CompuServe members may register directly through the CompuServe
  974. Registration Service.  To use this service enter GO SWREG at your CI$
  975. prompt.  Registration ID is 1354 for CEnvi for DOS, 1355 for CEnvi for
  976. OS/2, and 1356 for CEnvi for Windows (you only need to register ONE
  977. version).  Nombas will immediately be informed of your registration, and
  978. the CEnvi registration fee will automatically be added to your CompuServe
  979. bill.
  980. ***************************************************************************
  981. ************ REGISTRATION METHOD 3: Public (software) Library *************
  982. ***************************************************************************
  983. CREDIT CARD ORDERS ONLY -
  984.  
  985. You can order with MC, Visa, Amex, or Discover from Public (software)
  986. Library by calling 800-2424-PsL or 713-524-6394 or by FAX to 713-524-6398
  987. or by CIS EMail to 71355,470. You can also mail credit card orders to PsL
  988. at P.O.Box 35705, Houston, TX 77235-5705.
  989.  
  990. THE ABOVE NUMBERS ARE FOR ORDERS ONLY.
  991.  
  992. Any questions about the status of the shipment of the order, refunds,
  993. registration options, product details, technical support, volume discounts,
  994. dealer pricing, site licenses, etc., must be directed to Nombas (see phone
  995. number and addresses below).
  996.  
  997. To insure that you get the latest version, PsL will notify Nombas the day
  998. of your order and we will ship the product directly to you.
  999.  
  1000. CEnvi (all versions) is PsL product #11069.  Prices (including shipping and
  1001. handling) are: $42 US/Canada and $45 overseas.
  1002.  
  1003.  
  1004. ***************************************************************************
  1005. Thank you for trying this shareware copy of CEnvi.  Mail inquires and other
  1006. correspondences to:
  1007.      Nombas
  1008.      P.O. Box 875
  1009.      Medford, MA  02155   USA
  1010.  
  1011. Nombas may also be contacted at:
  1012.      Phone: (617)391-6595
  1013.      Internet: bsn@world.std.com
  1014.      CompuServe: 72212,1622
  1015.      BBS: (617)391-6595 ext. 44 (e.g., ATDT16173916595,,,,,44444)
  1016.